# 导包
# 引入ui自动化selenium 工具
import time
from selenium import webdriver
# 引入元素定位所需工具
# 个人理解是导入浏览器服务 通过服务进行操作
from selenium.webdriver.chrome.service import Service
# 既然是通过元素定位，自然要表明其所属元素 以及相应取值（名称）
from selenium.webdriver.common.by import By


# 构建浏览器驱动 这是测试web软件的测试基础
driver=webdriver.Chrome();
# 启动web项目
driver.get("http://121.43.169.97:8848/pageA.html");
# 元素定位法 通过html元素定位其数据填写位置 再将数据填入
# 1.元素属性ID定位  by 查找的元素类型  value 其元素名称（取值）
# 如果上述两者找到其位置，然后填写内容
# driver.find_element(by=By.ID,value="userA").send_keys("qyh")
# #根据name 元素查找
# driver.find_element(By.NAME,"passwordA").send_keys("123456");
# #根据 class 元素操作 通过单个完整类名进行查找 当有多个同名类时不推荐使用
# driver.find_element(By.CLASS_NAME,"telA").send_keys("15506734216");
# # 根据标签名称 定位   当有多个相同属性的标签名称时 默认第一个
# # driver.find_element(By.TAG_NAME,"input").send_keys("qyh2")
#
# # 超链接定位   其取值是超链接的完整文本信息   书写元素类型时注意大写
# # driver.find_element(By.LINK_TEXT,"访问 百度 网站").click();
# # 部分超链接定位 其取值是超链接文本的部分信息
# # driver.find_element(By.PARTIAL_LINK_TEXT,"百度").click();
#
# # XPath定位
# # 分为绝对、相对定位，其中绝对是从根目录开始到目标节点的
# # 以及后面的路径加属性定位、属性和逻辑结合、层级和属性结合、利用元素文本定位
# # 利用局部属性值定位 都是在相对路径的基础上定位的


# CSS元素定位 浏览器对象.find_element(by=By.CSS_SELECTOR,value="CSS表达式")
# css表达式为 id选择器，类选择器，标签（元素）选择器、属性选择器
# css id选择器
driver.find_element(By.CSS_SELECTOR,"#userA").send_keys("qqq");
# css类选择器
driver.find_element(By.CSS_SELECTOR,".telA").send_keys("15565727766")
# css 属性选择器
driver.find_element(By.CSS_SELECTOR,"[name='passwordA']").send_keys("123456")
# css 元素（标签）选择器
# driver.find_element(By.CSS_SELECTOR,"button").click();
# 层级选择器  元素1>元素2   或 元素1 元素2   就是确认父子关系的形式
driver.find_element(By.CSS_SELECTOR,"p>select").send_keys("广州")
# 其他选择器 利用局部属性值定位元素 # 写法： 标签名[属性名*='局部属性值']  使用多个相同标签时使用
driver.find_element(By.CSS_SELECTOR,"input[type*='email']").send_keys("2777@qq.com")


# time.sleep(15)
# driver.quit();